package com.xzmzhp.utils;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;

/**
 * @author 王源(xm)
 * @Date: 2020/11/14 15:13
 * @Description: json数据转换
 */
public class JsonConversion {
    /**
     * 定义jackson对象
     */
    private static final ObjectMapper MAPPER = new ObjectMapper();

    /**
     * 将json数据转换为pojo类
     *
     * @param jsonData jsons数据
     * @param clazz    pojo类
     * @return Object
     */
    public Object formatToPojo(String jsonData, Class<?> clazz) {
        //定义返回对象
        Object obj = null;
        try {
            //判断是否为空
            if (clazz == null) {
                return null;
            }
            //获取JsonNode对象
            JsonNode jsonNode = MAPPER.readTree(jsonData);
            //使用JsonNode 读取数据
            JsonNode data = jsonNode.get("data");

            //将josn转换为JsonObject对象
            if (data.isObject()) {
                obj = MAPPER.readValue(data.traverse(), clazz);
            } else if (data.isTextual()) {
                obj = MAPPER.readValue(data.asText(), clazz);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
        return obj;
    }
}
